#include <iostream>

//自己调用自己
void func(int count)
{   
    //递归的终止条件
    // if(count==0)
    //     return;
    // //递归主体
    // count--;
    // for(int i = count;i > 0;i--)
    // printf("第%d次调用\n",i);
    // func(count);
}

int MonkeyPeach(int day)
{
    if(day == 10)
        return 1;
    return (MonkeyPeach(day + 1) + 1)* 2;
}

//递归计算字符串长度
int StrLen(const char *s)
{
    if(*s == '\0')
        return 0;
    return StrLen(s+1) +1;
}

//递归求n!
int fatorial(int n)
{
    if(n == 0 || n== 1)
     return 1;
    return n*fatorial(n-1);
}

//青蛙跳台阶
//1个台阶，2个台阶
int Step(int n)
{
    if(n == 1)
        return 1;
    if(n == 2)
        return 2;
    return Step(n-1) + Step(n-2);
}
//动态规划
int main()
{   
    // printf("第一天：%d\n",MonkeyPeach(1));
    // printf("%d\n",Step(4));

    int a = 10;
    int b = 20;
    int mid = (a&b)+((a^b)>>1);
    std::cout<<mid<<std::endl;
    return 0;
}